package dp.expression;



/**
 * 
如果一种特定类型的问题发生的频率足够高，那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。
这样就可以构建一个解释器，该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好。
 *
 */
public class Client {
	private static Expression ex;

	private static Context con;

	public static void main(String[] args)

	{

		con = new Context();

		// 设置变量、常量

		Variable a = new Variable();

		Variable b = new Variable();

		Constant c = new Constant(2);

		// 为变量赋值

		con.addValue(a, 5);

		con.addValue(b, 7);

		// 运算，对句子的结构由我们自己来分析，构造

		ex = new Division(new Multiply(a, b), new Add(new Subtract(a, b), c));

		System.out.println("运算结果为：" + ex.interpret(con));

	}
}
